from dataclasses import dataclass

@dataclass
class Args:
    seed: int = 313 # Seed for random number generators
    env_id: str = "Hopper-v4" # Name of the environment
    test_envs_num: int = 10 # Number of environments for testing
    total_timesteps: int = int(1e6) # Total number of samples to train on
    buffer_size: int = int(1e6) # Number of samples in the replay buffer
    batch_size: int = 512 # Number of transitions to optimize at the same time

    alpha: float = 0.2 # Temperature parameter α determines the relative importance of the entropy term against the reward
    gamma: float = 0.99 # Discount factor
    tau: float = 0.005 # Target network update rate
    q_lr: float = 1e-3 # Learning rate for the Q-networks
    sigma_max: float = -0.3 # Max log value for the standard deviation
    sigma_min: float = -5.0 # Min log value for the standard deviation
    grad_clip: float = 30 # Max norm for the gradients

    learning_starts: int = 10000 # Timesteps before learning starts
    target_network_frequency: int = 1 # The frequency with which the target network is updated

    autotune: bool = False # Automatically adjust α
    deterministic_action: bool = True # Use deterministic actions
    evaluate_frequency: int = 10000 # How often to evaluate
